package cn.com.longfuinfo.wx.controller;

import cn.com.longfuinfo.wx.common.CartKit;
import cn.com.longfuinfo.wx.common.CartKit.Cart;
import cn.com.longfuinfo.wx.common.CartKit.CartGoods;
import cn.com.longfuinfo.wx.kit.MapKit;

/**
 * 用户购物车操作<br/>
 * 未登录时，保存在session中
 */
public class CartController extends BaseController{
	
	/**
	 * 异步查询购物车商品数量，多用于页面底部大菜单中“购物车”的角标显示
	 */
	public void state(){
		//返回当前购物车商品数量及总金额
		Cart cart = CartKit.getCart(getSession(),0);
		renderSuccess(MapKit.one()
				.put("CART_COUNTER", cart.getCounter())
				.put("CART_TOTAL", cart.getTotal())
				.getAttrs());
	}
	
	/**
	 * 异步查询购物车清单
	 */
	public void detail(){
		//返回当前自营商品购物车及店铺商品购物车
		Cart cart = CartKit.getCart(getSession(),0);
		renderSuccess(MapKit.one()
				.put("cart", cart)
				.getAttrs());
	}
	
	/**
	 * 加入购物车
	 * @param goodsid 商品ID
	 * @param goodsName 商品标题
	 * @param goodsSpec 商品规格
	 * @param goodsThumb 商品图片
	 * @param goodsSellPrice 商品销售价
	 * @param goodsMarketPrice 商品市场价
	 */
	public void add(){
		String goodsid = getPara("id");
		String goodsName = getPara("name");
		String goodsSpec = getPara("spec");
		String goodsThumb = getPara("thumb");
		String goodsItemTitle = getPara("itemTitle");
		String goodsItemId = getPara("itemId");
		double goodsItemPrice = Double.parseDouble(getPara("itemPrice"));
		//购物车商品对象
		CartGoods cartGoods = new CartGoods(goodsid,goodsItemId,goodsName,goodsSpec,goodsThumb,goodsItemPrice,goodsItemTitle);
		CartKit.add(getSession(), 0, cartGoods);
		//返回当前购物车商品数量及总金额
		Cart cart = CartKit.getCart(getSession(),0);
		renderSuccess(MapKit.one()
				.put("counter", cart.getCounter())
				.put("total", cart.getTotal())
				.getAttrs());
	}
	
	/**
	 * 修改商品数量
	 * @param goodsid 要修改数量的商品ID
	 * @param operate 1：增加数量，0：减少数量
	 * @param num 要修改的数量
	 */
	public void update(){
		String goodsid = getPara("goodsid");
		int operate = getParaToInt("operate");
		int num = getParaToInt("num");
		//判断商品如果是在自营商品购物车中，则更新自营商品购物车
		Cart cart = CartKit.getCart(getSession(), 0);
		if(cart.hasGoods(goodsid)){
			cart.update(goodsid, operate, num);
		}
		//返回当前购物车商品数量及总金额
		renderSuccess();
	}
	
	/**
	 * 从购物车中移除某些商品
	 * @param goodsid 要移除的商品ID数组，以英文逗号分隔
	 */
	public void delete(){
		String goodsid = getPara("goodsid");
		String[] goodsids = goodsid.split(",");
		//从自营商品购物车中删除商品
		Cart cart = CartKit.getCart(getSession(), 0);
		cart.delete(goodsids);
		//返回当前购物车商品数量及总金额
		renderSuccess();
	}
}
